import {reactive} from "vue";
import http from "../http";
const course = reactive({
    direction_list: [],    // 学习方向列表
    category_list: [],     // 课程分类列表
    course_list: [],     // 课程信息列表
    current_direction: 0,  // 当前选中的学习方向，0表示所有方向
    current_category: 0,  // 当前选中的课程分类，0表示不限分类
    ordering: "",          // 课程排序条件

    page: 1,               // 当前页码，默认为1has_next
    size: 5,               // 当前页数据量
    count: 0,              // 课程信息列表的数量
    has_perv: false,       // 是否有上一页
    has_next: false,       // 是否有下一页

    course_discount_timer: null,           // 课程列表相关数据的定时器
    text: "",              // 搜索框字段
    hot_word_list: [],    // 热搜词列表


    course_channal_list:[], // 频道课程表
    course_title_list:[],
    commentList:[],
    replyList:[],


    course_id: null,  // 课程ID
    info: {           // 课程详情信息
      teacher:{},     // 课程相关的老师信息
      discount:{      // 课程相关的折扣信息
        type: ""
      }
    },
    tabIndex: 2,      // 课程详情页中默认展示的课程信息的选项卡
    timer: null,      // 课程详情页的相关数据的定时器
    chapter_list: [], // 课程章节列表

    course_type: [],  // 我的课程-课程类型列表
    current_course_type: -1,  // 我的课程-当前显示的课程类型，默认为-1，表示全部
    user_course_count: 0,    // 我的课程-课程列表总数
    user_course_list:[], // 用户中心的课程列表
    lessonList:[],

    lesson_list: [  // 当前学习的课程的章节课时列表
      // {
      //     id: 1,
      //     label: '1. 概述',
      //     children: [
      //         {id: 4, label: '1.1 基础环境'},
      //     ]
      // }, {
      //     id: 2,
      //     label: '2. 快速入门',
      //     children: [
      //         {id: 5, label: '2.1 基本使用步骤'},
      //         {id: 6, label: '2.2 常用写法'}
      //     ]
      // }, {
      //     id: 3,
      //     label: '3. 路由基础',
      //     children: [
      //         {id: 7, label: '3.1 路由基本概念'},
      //         {id: 8, label: '3.2 普通路由'}
      //     ]
      // }
    ],
    defaultProps:{  // 树形菜单的配置项
      children: 'children',
      label: 'label'
    },
    user_course_process: {},       // 用户在当前课程的学习进度记录
    current_chapter: null, // 正在学习的章节ID
    current_lesson: null,  // 正在学习的课时ID
    lesson_link: null,     // 正在学习的课时视频ID
    player: null,          // 当前页面的视频播放器对象
    current_time: 0,       // 播放器，当前播放时间

    get_course_direction(){
      // 获取学习方向信息
      return http.get(`/courses/direction/`).then(response=>{
        this.direction_list = response.data;
      })
    },
    get_course_category () {
      // 获取课程分类信息
      return http.get(`/courses/category/${this.current_direction}/`,).then(response=>{
        this.category_list = response.data;
      })
    },
    addcomment(form) {
      return http.post("/home/nav/addcomment/", form)
  },
    get_course_list () {
      // 获取课程列表
      let params = {
        page: this.page,
        size: this.size,
      }
      if(this.ordering){
        params.ordering = this.ordering;
      }
     return http.get(`/courses/${this.current_direction}/${this.current_category}/`,{
       params,
     }).then(response=>{
        // 当前页的数据列表
        this.course_list = response.data.results;
        // 总数据量
        course.count = response.data.count
        // 是否有上一页和下一页
        course.has_perv = !!response.data.previous; // !!2个非表示把数据转换成布尔值
        course.has_next = !!response.data.next;
        
        // 开始活动倒计时
        // this.start_timer();
     })
    },
    start_timer() {
      // 课程相关的优惠活动倒计时
      clearInterval(this.course_discount_timer);
      this.course_discount_timer = setInterval(() => {
            this.course_list.forEach((course) => {
                // js的对象和python里面的字典/列表一样， 是属于引用类型的。所以修改了成员的值也会影响自身的。
                if (course.discount.expire !== undefined && course.discount.expire > 0) {
                    // 时间不断自减
                    course.discount.expire--
                }
            })
        }, 1000);
    },
    search_course() {
        // 课程搜索
        let params = {
            page: this.page,
            size: this.size,
            text: this.text,
        }
        if (this.ordering) {
            params['ordering'] = this.ordering
        }
        return http.get(`/home/nav/querysome/`, {
            params,
        }).then(response=>{
        // 当前页的数据列表
        console.log(response.data.res,"ffffffffffffff")
        this.course_list = response.data.res;
        // this.course_list.forEach(course=>{
        //   console.log(course);
        //   course.discount = JSON.parse(course.discount)
        // })
        // 总数据量
        this.course_title_list.sercourse=response.data.res

        course.count = response.data.total
        // 是否有上一页和下一页
        course.has_perv = !!response.data.previous; // !!2个非表示把数据转换成布尔值
        course.has_next = !!response.data.next;
        // 开始活动倒计时
        // this.start_timer();
        // 更新搜索关键字
        this.get_hot_word();
     })
    },
    get_hot_word(){
        // 课程热搜关键字
        return http.get("/courses/search/hot_word/").then(response=>{
          this.hot_word_list = response.data
        })
    },
    // get_course(){
    //   // 获取课程详情
    //   return http.get(`/courses/${this.course_id}/`).then(response=>{
    //     this.info = response.data;
    //     return this.get_course_chapters();
    //   })
    // },
    get_course_chapters(){
        // 获取指定课程的章节列表
        return http.get(`/courses/${this.course_id}/chapters/`).then(response=>{
          this.chapter_list = response.data;
        })
    },
    get_course_type_list(){
        // 获取课程类型
        return http.get("/courses/type/").then(response=>{
          this.course_type = response.data
        })
    },
    get_user_course_list(token){
        // 获取用户的课程列表
        return http.get("/home/nav/courses/", {
            params: {
                type: this.current_course_type,
                page: this.page,
                size: this.size,
            },
          
        }).then(response=>{
          console.log(response.data.data)
          this.user_course_list = response.data.data;
          this.user_course_count = response.data.count;
          this.has_perv=response.data.pre,       // 是否有上一页
          this.has_next= response.data.next
        })
    },
    get_user_course(token){
        // 获取用户的指定课程信息包含学习进度
        return http.get(`/users/courses/${this.course_id}/`,{
            headers:{
                Authorization: "Bearer " + token,
            }
        }).then(response=>{
          this.user_course_process = response.data;
          this.current_chapter = response.data.chapter_id;
          this.current_lesson = response.data.lesson_id;
          this.lesson_link = response.data.lesson_link;
          return response;
        })
    },
    get_lesson_study_time(lesson, token){
        // 获取课程课时学习进度时间
        return http.get("/users/study/", {
            params:{
              lesson,
            },
            headers:{
                Authorization: "Bearer " + token,
            }
        })
    },
    update_lesson_study_time(lesson, time, token) {
        // 更新课时学习的进度
        return http.put('/users/study/', {
            time: time,
            lesson: lesson,
        },{
            headers: {
                Authorization: "Bearer " + token,
            }
        })
    }, 
    get_course_channel(id,ind){
      // 课程热搜关键字  http://127.0.0.1:8000/home/nav/homeCourse/?catesid=1&ind=1
      return http.get("/home/nav/homeCourse/?catesid="+id+"&ind="+ind).then(response=>{
        console.log(response.data.clist)
        this.course_channal_list = response.data.clist
        console.log(this.course_channal_list,"000011110000")
      })
  },
  get_courset_itle(item){
    // 课程热搜关键字  http://127.0.0.1:8000/home/nav/courseTitle/
    var url=""
    if(item==null){
      url= "/home/nav/courseTitle/?"
    }else{
       url= "/home/nav/courseTitle/?"
   

      console.log(item)
        if(item.topid!=null && item.topid!=0){
          url+="topid="+item.topid+"&"
        }
        if(item.cateid!=null  && item.cateid!=0 ){
          url+="cateid="+item.cateid+"&"
        }
        if(item.sorted!=null){
          url+="sorted="+item.sorted+"&"
        }
        if(item.page!=null){
           url+="page="+String(item.page)+"&"
        }
      }

    return http.get(url).then(response=>{
      console.log(response.data.clist)
      this.course_title_list = response.data.clist
                  // 总数据量
      course.count = response.data.clist.total
                  // 是否有上一页和下一页
      course.has_perv = !!response.data.clist.previous; // !!2个非表示把数据转换成布尔值
      course.has_next = !!response.data.clist.next;

      console.log(this.course_channal_list,"000011110000")
    })
},
  get_course(){
  // 获取课程详情
    return http.get(`home/nav/courseDetail/${this.course_id}/`).then(response=>{
      this.info = response.data.detail.detail;
      console.log(response.data.detail)
      this.info.teacher=response.data.detail.detail.teacherd
      this.chapter_list=response.data.detail.chapterList
      this.lessonList=response.data.detail.lessonList
      this.commentList=response.data.detail.commentList
      this.replyList=response.data.detail.replyList
    })
},

})

export default course;